package main

import (
	"fmt"

	lru "github.com/hashicorp/golang-lru/v2"
)

func main() {
	// 创建一个最大容量为 5 的 LRU 缓存
	cache, err := lru.New[string, string](5)
	if err != nil {
		fmt.Println("Error creating LRU cache:", err)
		return
	}

	// 添加一些数据到缓存中
	cache.Add("key1", "value1")
	cache.Add("key2", "value2")
	cache.Add("key3", "value3")
	cache.Add("key4", "value4")
	cache.Add("key5", "value5") // 尝试获取缓存中的数据

	if value, ok := cache.Get("key1"); ok {
		fmt.Println("key1:", value)
	} else {
		fmt.Println("key1 not found in cache")
	}

	// 添加超过容量的数据，触发 LRU 机制
	cache.Add("key6", "value6") // 此时 "key2" 应该被移出缓存，因为它是最早添加的且没有再次被访问

	if value, ok := cache.Get("key2"); ok {
		fmt.Println("key2:", value)
	} else {
		fmt.Println("key2 not found in cache")
	}
}
